/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.patpro.controladores;

import com.patpro.modelo.javabeans.AsignacionAcademica;
import com.patpro.modelo.servicios.AsignacionAcademicaService;
import com.patpro.modelo.servicios.CursoService;
import com.patpro.modelo.servicios.ProfesorServicio;
import com.patpro.modelo.servicios.SemestreAcademicoService;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

/** 

 */
public class ActualizaAsignacionAcadController extends SimpleFormController {

    private AsignacionAcademicaService servicio_asignacion;
    private SemestreAcademicoService servicio_semestre;
    private CursoService servicio_curso;
    private ProfesorServicio servicio_profesor;

    public ActualizaAsignacionAcadController() {
        setCommandClass(AsignacionAcademica.class);
        setCommandName("asignacionBean");
        //setSuccessView("successView");
        //setFormView("formView");
    }

    public CursoService getServicio_curso() {
        return servicio_curso;
    }

    public void setServicio_curso(CursoService servicio_curso) {
        this.servicio_curso = servicio_curso;
    }

    public ProfesorServicio getServicio_profesor() {
        return servicio_profesor;
    }

    public void setServicio_profesor(ProfesorServicio servicio_profesor) {
        this.servicio_profesor = servicio_profesor;
    }

    public SemestreAcademicoService getServicio_semestre() {
        return servicio_semestre;
    }

    public void setServicio_semestre(SemestreAcademicoService servicio_semestre) {
        this.servicio_semestre = servicio_semestre;
    }

    public AsignacionAcademicaService getServicio_asignacion() {
        return servicio_asignacion;
    }

    public void setServicio_asignacion(AsignacionAcademicaService servicio_asignacion) {
        this.servicio_asignacion = servicio_asignacion;
    }

    @Override
    protected Object formBackingObject(HttpServletRequest request) throws Exception {
        AsignacionAcademica as = (AsignacionAcademica) super.formBackingObject(request);
        String id_semestre = request.getParameter("id_semestre");
        String id_curso = request.getParameter("id_curso");
        String id_profesor = request.getParameter("id_profesor");

        if(id_semestre != null){
            as = servicio_asignacion.buscarAsignacionAcademica(
                    new AsignacionAcademica(Integer.parseInt(id_curso), Integer.parseInt(id_semestre), Integer.parseInt(id_profesor)));
        }

        return as;
    }

    @Override
    public Map referenceData(HttpServletRequest request) {
        Map modelo = new HashMap();
        List<AsignacionAcademica> asignaciones = servicio_asignacion.listarAsignacionAcademica();
        modelo.put("lista_asignacion", asignaciones);

        modelo.put("lista_semestres", servicio_semestre.listarSemestres());
        modelo.put("lista_cursos", servicio_curso.listarCursos());
        modelo.put("lista_profesores", servicio_profesor.listarProfesores());
        String id = request.getParameter("id_semestre");
        if(id == null)
            modelo.put("opcion", "Agregar");
        else{
            modelo.put("opcion", "Actualizar");
            modelo.put("actualiza", true);
        }
        return modelo;
    }

    @Override
    protected ModelAndView onSubmit(
            HttpServletRequest request,
            HttpServletResponse response,
            Object command,
            BindException errors) throws Exception {
        ModelAndView mv =null;

        String opt = request.getParameter("opt");
        AsignacionAcademica asignacion = (AsignacionAcademica) command;
        int resp = 0;
        if(opt.equalsIgnoreCase("Agregar"))
           resp = servicio_asignacion.insertarAsigancionAcademica(asignacion);
        else
            resp = servicio_asignacion.actualizarAsigancionAcademica(asignacion);
        if(resp > 0)
            mv = new ModelAndView(getSuccessView());
        else
            mv = new ModelAndView("error");
        mv.addObject("controlador", "adminAsignacion");
        return mv;
    }
}
